package collection01;

import java.util.ArrayList;
import java.util.Collection;

/*
集合的判断功能：
 boolean contains(Object o)
          判断集合中是否包含指定元素，如果包含，返回true
                                  不包含，返回false
          contains()方法底层判断元素是否包含在集合中，他其实依赖的是存储元素的boolean equals(Object obj)方法
          int[] arr{13,15,17,19}
        Person p1 = new Person("无忌", 19);
        Person p2 = new Person("敏敏", 18);
        c.add(p1);  //p3和p1比较，其实就是调用equals()方法，相当于p3.equals(p1),Person类中默认的equals()方法，比较的是内存地址值
        c.add(p2);  //p3和p2比较，其实就是调用equals()方法，相当于p3.equals(p2),Person类中默认的equals()方法，比较的是内存地址值

        Person p3 = new Person("无忌", 19);
        System.out.println(c.contains(p3)); //当所有元素都调用equals()方法和p3比较，都返回flase，说明这个集合中不包含p3
                                            //最终contains方法会false

 boolean isEmpty()
          判断集合是否有元素，如果有元素，返回false
                             无元素，返回true
 */
public class CollectionDemo02 {
    public static void main(String[] args) {
        //method01();
        //method02();
        Person p1 = new Person("无忌", 19);
        Person p2 = new Person("敏敏", 18);
        Collection c = new ArrayList();
        c.add(p1);//Object e = p1 = new Person("无忌",19);  多态
        c.add(p2);
        System.out.println(c);//[collection01.Person@4eec7777, collection01.Person@3b07d329]
        //集合中的元素也会调用toString()方法
        Person p3 = new Person("无忌", 19);
        System.out.println(c.contains(p3));//    //当所有元素都调用equals()方法和p3比较，都返回flase，说明这个集合中不包含p3
                                                 //最终contains方法会false
                                                 //当我们重写了Person类中equals()方法，比较姓名和年龄，
                                                 //此时p3和p1都是一样的，所以认为集合中包含这个人，返回true
        Person p4 = new Person("无忌", 21);
        System.out.println(c.contains(p4));//false

    }

    private static void method02() {
        Collection c = new ArrayList();
        c.add("张三");
        c.add("李四");
        c.add("王五");
        System.out.println(c.contains("李四"));//true
        System.out.println(c.contains("赵六"));//false
    }

    private static void method01() {
        Collection c = new ArrayList();
        c.add("abc");
        c.add("def");
        System.out.println(c.isEmpty());//false
        c.clear();
        System.out.println(c.isEmpty());//true
    }
}
